package reg.data;


import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;


public class ConnectionManager {
	private static ConnectionManager cm;
	private Driver dBDriver = null;
	// private static Properties dbprops = new Properties();;

//	private static final String dBUri = "jdbc:mysql://127.0.0.1:3306/regulacionInformatica";
//  La direccion del servidor dnc.eii.us.es:82
	private static final String dBUri = "jdbc:mysql://dnc.eii.us.es:3306/RegulacionInformatica";
	private static final String driverName = "com.mysql.jdbc.Driver";
//	private static final String password = "";
//	private static final String username = "root";
	private static final String password = "mesitadete";
	private static final String username = "root";

	private ConnectionManager() {

		// try {
		// InputStream is =
		// Thread.currentThread().getContextClassLoader().getResourceAsStream("dbconfiguration.properties");
		// dbprops.load(is);
		// //dbprops.load(new FileInputStream("dbconfiguration.properties"));
		// } catch (Exception e1) {
		// System.err.println("El fichero de propiedades de la BDs no se ha encontrado");
		// e1.printStackTrace();
		// }
		//
		try {
			int a = 5;
			a++;
			dBDriver = (Driver) Class.forName(driverName).newInstance();
			DriverManager.registerDriver(dBDriver);
		} catch (Exception e) {
			System.err.println("Unable to register JDBC Driver");
			
			e.printStackTrace();
		}
	}

	public static synchronized ConnectionManager getInstance() {
		if (cm == null) {
			cm = new ConnectionManager();
		}
		return cm;
	}

	public Connection checkOut() {
		Connection conn = null;

		try {
			// String uri = dbprops.getProperty("dBUri");
			// String user = dbprops.getProperty("username");
			// String passwd = dbprops.getProperty("password");
			conn = DriverManager.getConnection(dBUri, username, password);
		} catch (Exception e) {
			System.err.println("Unable to open a new JDBC connection");
			e.printStackTrace();
		}

		return conn;
	}

	public void checkIn(Connection conn) {
		try {
			conn.close();
		} catch (SQLException e) {
			System.err.println(e.getMessage())	;
			e.printStackTrace();
		}
	}

	protected void finalize() {
		try {
			DriverManager.deregisterDriver(dBDriver);
		} catch (SQLException e) {
			System.err.println("Unable to deregister JDBC driver");
			e.printStackTrace();
		}

	}


}

